リアルモードUMBで使用するために 主にPC-9821 PCI搭載機種で拡張ROM域のD000,D400およびROM BASICエリアをRAM化する 

 PCIUMB.SYS

Copyright(C) 2023 まりも (DOSsoft)

■1.本ツールの目的 

 PC-9800シリーズでは D0000-D7FFFFの領域は拡張ROMのために用意された空間ですが、SCSIボードを使用していてもこのエリアは空いていることが多いです。PCIバス搭載機ではこれらの領域の裏には高速にアクセスできるRAMが存在しています。本ツールではそのRAMを表に出すことによって、これらの領域をMS-DOS 5.0〜7.1のUMB(Upper Memory Block)として活用できます。

 通常は仮想86 EMM386でUMB化して使いますが、本ツールでRAM化したあとに、UMB拡張を行うデバイスドライバを導入することによって、「リアルモードでUMB」が使えるというわけです。

 いっぽうPCIバス搭載以前のレガシーなPC-98ではそのようなエリアにRAMはありません。そこでメルコのEMJシリーズのメモリボード(本来はEMSとして使うもの)を活用し、それがあればD0000-D4000hのところにマッピングしてUMBとして使えるRAMを出現させることにしました。この機能はCPUが80286以上であれば使用できます(DOS 5.0が80286以上推奨となっているため)。

 本ツールでは非常に機種依存性が強いRAM化の部分だけを行います。UMBを構築するにあたっては、下記の通り、他の方の作品であるUMB拡張ツールを使用して下さい。

■2.使い方

STEP-0 アーカイブの解凍とPCIUMB.SYSの取り出し

 アーカイブを解凍すると
PCIUMB.SYS (デバイスドライバ)
・PCIUMB.EXE (補助ツール、DOS実行プログラム)
・PCIUMB.TXT (このドキュメント)
などが得られますので、どこかのディレクトリに保存してください。以下では説明の都合上、起動ドライブのルートディレクトリに置いたものとしておきます。

STEP-1 PCIUMB.SYSをconfig.sysに登録

 Config.sysの先頭のほうに記述してください。少なくともHIMEM.SYSより前です。リブートツールHSBとの前後関係はどちらがよいかよくわかっていません。

STEP-2 UMBドライバをconfig.sysに登録

 UMB拡張ツールドライバはいろいろあると思いますから適当なものを探してみてください。その一つとして、 EMUMBというものをとりあげて説明します。⇒入手先(vector.co.jp)

EMUMBには複数のドライバファイルがありますが、HIMEM.SYS機能非内蔵版を使い、
device=EMUMB386.SYS /Ed000-d7ff /Me800-efff /

のように有効な範囲を指定して下さい。この記述位置もHIMEM.SYSより前とします。PCIバス搭載機でなくEMJボードを使う場合は、E8000h〜のROM BASIC エリアを使用できませんので、UMBではD7FFFhまでのみを使うようにオプションを記述してください。
device=EMUMB386.SYS /Ed000-d7ff

 デバイスドライバの記述順序を示す例(あくまで一例)
    device = PCIUMB.SYS
    device = EMUMB386.SYS /Ed000-d7ff /Me800-efff
    device = HIMEM.SYS /TESTMEM:OFF

STEP-3 (PCIバス非搭載機でメルコのEMJシリーズメモリボードを使う場合のみ)

 EMJシリーズメモリボードは、「EMS専用」に予めロータリスイッチSW1,SW2を設定しておいてください。一部でもプロテクトモードメモリが混ざった設定にすると使用できません。また本ツールを使う以上はEMSボードとしての併用はできませんので、メルコのMELEMM.SYSをConfig.sysに記述してはいけません。リアルモードでEMSを使いたい場合は、EMJとは競合しないI-O DATA機器製のPC34シリーズのボードも装着し、I-O DATAのドライバEMM4J.SYSを使用してください。本ツールと併用できます。

STEP-4 適用して再起動

 UMBとしたいエリアにRAMが出現し、UMBドライバがUMBエリアとして確保しているはずです。EMJボードを使用した場合はD0000h〜D7FFFhのみUMBエリアとすることができます。なお既になにかのBIOS ROMが拡張ROMエリアにあって D0000h〜D7FFFhのどこかを占有している場合は、その部分を含む16KB単位でRAMの割り付けが回避されます。これによりUMBとして使えるエリアも狭くなりますので、UMBドライバの有効範囲を調整してください。使えないエリアを指定するとエラーになるはずです。

 EMJボードを使っていて再起動したときは、シアン色で
「UMB用のshadow RAMの空きエリアがないか,既に適用済みです.なにもしません.」
という表示が出る場合がありますが、気にする必要はありません。ハードウェアリセットされない再起動ではメモリの内容が保持されるので、既に何かにより占有されていると判断されます。

事前調査やトラブル発生の場合

 デバイストライバのほか、DOS実行プログラムとして PCIUMB.EXEが付属しています。これは予めRAMが出現できるかの確認に利用してください。RAMが出現できないのにconfig.sysでUMBの記述をするとハングアップすることがありますから、事前の調査はしておくべきです。なおconfig.sysでハングアップする場合は、DOS起動中にF・8キーを叩き、逐次実行モードにしたうえで、PCIUMB.SYSか次のUMBドライバのところで現れる[Y/N]にNを押し、実行を回避してください。

 PCIバス搭載機ではE8000h〜もRAM化しますので、N88 ROM BASICが使用できなくなります。それだけでなく、ROM BASIC内のルーチンを使用したグラフィックプログラムに動作しないものが発生する可能性があります。なお非PCI機でEMJ使用時にはROM BASICのエリアを使用しませんので、この制約はありません。

■3.注意 

 PCIバス搭載機種のうち次のものには対応していません。EMJボードも対応しません。
× PC-9821 Xa初代,Xt初代,Xf, St15,St20, SV-98,ノート機など

 UMBを目的とするわけですから、使用できるDOSのバージョンは 5.0A以上です。

 RAM化UMBはリアルモードのDOSで意味があります。EMM386を使うのであればその機能でもUMBにできるので、本ツールはそもそも必要ではありませんが、EMS目的でEMM386の併用はできます。その場合にはConfig.sysのEMM386.EXEの記述オプションではUMBの割り当ては無いもの(/NOUMB)としておいてください。

 EMJボードはPCIバス搭載機では無意味かつ動作不良を招くので装着しないでください。。

 EMJボードは既に述べたように必ずEMS専用に設定してください。それ以外のモードでは本ツールは使用できません。また本ツールを使う場合はEMJボードに「不揮発化改造」を施したものは使用しないでください。リセット後になにかが既に占有しているものと判断され、RAMの割り当てが行われなくなってしまいます。

 IDEデバイスが接続されておらずIDE BIOSが現れていない場合には、D8000h〜DBFFFhの16KBにもRAMを割り当てます。レガシー機ではこの状態でも裏にあるPnP BIOSは動作可能なようです。UMBのエリアの範囲をD7FFFhに延長することは可能ですが、多少危険であることに留意しておいてください。

 既存の同類ツール、E800RAM1.SYSとは併用できません。C000RAM1.SYSとは併用可能で UMBエリアを最大 C0000h〜CFFFFh,E8000h〜EFFFFhの96KBも確保可能です。

 I-O DATA機器製のPC34シリーズを活用したテキスト画面キャプチャツール「TXTCPY34」というものを公開していますが、使用するROMアドレスが重なるため、これとの併用はできません。

 PC34Rシリーズを活用したROMエミュレータ「PC34D0」も基本的には併用はできません。ただし先にPC34D0のほうが有効となりD0000h〜D3FFFhが占有されていた場合は、本ツールはそこを避けてD4000h〜D7FFFhのみ割り当てることで併用できます。しかし何かの理由でPC34D0のマッピングが解除された後には、本ツールが優先され、PC34D0が動作しなくなります。

■4.その他

 ソースコードはpciumbsr.zipに同梱されています。

■5.お約束

 このプログラムはフリーソフトウェアです。自由に使用してよい代わりにサポートのようなものはありません。直接・間接的に、このプログラムの運用の結果に何があっても、作者は一切責任をとることはないものとします。著作権は作者が保持しています。著作権侵害のないようにお使いください。他のサイトへの無断転載は認めません。連絡先メールアドレスは、トップページに記載されています。

[同意の上ダウンロードする]

■6.【改版履歴】

2023.11.1 1.00版 新規作成


[戻る]